常见的客户端漏洞有哪些
常见的客户端漏洞有:
DoS:许多Web浏览器漏洞只会触发客户端DoS,进而导致浏览器崩溃或是变得无响应。这类漏洞通常是由无尽循环或内存破坏等不能被攻击者进一步利用的状况导致的。从重要性上来说,客户端DoS攻击非常次要。虽然每次Web浏览器崩溃后,重启浏览器这件事情很恼人,但它不会导致任何持久的损害。与服务端DoS攻击不同,客户端DoS攻击只会造成一次性的损害。
缓冲区溢出:缓冲区溢出是非常普遍的Web浏览器漏洞,它们能够被以前提到过的几乎所有输入向量所触发。由于缓冲区溢出漏洞能够导致代码执行,因此尤其危险。
旁路跨域限制:Web浏览器禁止一个Web站点获取其他网站上的内容。这个限制非常重要,要是没有这个限制的话,任何网站都能从其他网站上获取到cookie之类的信息,而cookie信息通常包含有session ID等重要信息。许多现有的漏洞允许站点打破这个域限制。上文提到的Google桌面搜索中存在的漏洞就是这类问题的一个例子。
旁路安全区域:Internet Explorer根据内容来源的区域实现安全性。来源于Internet的文档通常被认为是不受信任的,因此存在着严格限制。与之相反,打开的本地文件则被认为是可信的,并被授予了许多特权。2005年2月,Jouko Pynnonen公布了一个安全问题,描述特殊编码的URL如何骗过Internet Explorer,使其将远程文件当作打开的本地文件来处理。这种漏洞允许攻击者将恶意脚本包含在下载文件中,能够执行一个攻击者提供的利用漏洞的代码。
远程命令执行:远程命令执行漏洞通常利用已存在的功能,该功能并没有被设计为允许远程代码执行,但却由于功能的缺陷导致允许远程代码执行。例如,Albert Puigsech Galicia发现攻击者能够将FTP命令直接注入到FTP URI中,这意味着只要诱使Internet Explorer 6.x或其更早版本的用户点击一个链接就能让用户的浏览器执行 FTP 命令。该漏洞能够用来向用户的计算机下载文件。进一步的研究发现,利用这个漏洞可以导致浏览器发送 email 信息。
地址栏欺骗:随着试图从毫无戒心的 Web用户那里获取信用卡号之类的私人信息的犯罪的不断增加,钓鱼已经成为了一个严重的问题。虽然有些钓鱼攻击仅利用了社会手段,但也有一些复杂的钓鱼攻击利用了Web 浏览器漏洞使得钓鱼网站看上去像是个合法的网站。地址栏欺骗漏洞对钓鱼者来说很有价值,因为这个漏洞允许一个伪造的Web页面看起来好像是位于合法站点上的。不幸的是,在所有主流Web浏览器中都存在一些这类漏洞。
常见的客户端漏洞的预防措施:
源代码分析:顾名思义,这种方法需要源代码,但是不一定要靠人的肉眼来一段一段看代码,有很多自动化的方法。简单来说,就是通过大量对已知的安全漏洞的研究,分析出漏洞产生的原理、模式和常见的代码规律,形成一个知识库,之后再利用这个知识库,对新开发的软件或者系统的源代码进行自动检测,从中发现潜在的未知漏洞。
人工代码分析:这是系统专家或代码高手常用的“挖洞”方法。这些人往往精通某个特定的系统或软件,如Windows、Android、iOS、web建站系统、常用软件等,或者精通某一类编程语言,如VB、C、C++、Java等,能直接通过肉眼找出安全漏洞,有源代码就看源代码,没有源代码就看反编译的代码。不过,这种挖洞方法过于依赖高手的存在,往往具有一定的偶然性,难以“量产”。在企业级应用中有很大的局限性。
恶意程序分析:这是安全分析人员常用的挖洞方法,用来发现别人已经知道并且在用,但是自己还不知道的漏洞。当安全分析人员捕获到某些新型木马病毒样本时,就会将它们放入一个隔离的虚拟环境中运行,以观察这些程序的活动和行为如果某个木马病毒在攻击过程中利用的是一个或者几个新型漏洞,就会在这种分析中显现出来,并被安全分析人员捕获。不过这种方法实际操作起来也不那么容易,毕竟全球每天都有大量新的木马病毒诞生,要从中找出几个特殊的样本,犹如大海捞针。
模糊测试分析:为了保证软件系统的稳定性和健壮性,测试人员往往会使用人工或自动化的方法对软件和系统进行模糊测试或者叫崩溃测试。比如手动在软件界面中随意单击,或向软件输入各种烂七八糟的数据。如果这些行为引起了软件的崩溃,如闪退、显示异常等,就说明软件的编写是有缺陷的。而每一个缺陷的背后都有可能潜藏着一个安全漏洞。
业务流程分析:有些安全漏洞并不是由程序代码引起的,而是由于业务流程的设计本身存在安全风险(设计逻辑的漏洞)。比如,一个实名认证系统要求验证用户的身份证,但无法识别验证者使用的是否是自己的身份证,那么这个认证系统的设计实际上就是有漏洞的,就给了犯罪分子可乘之机。在业务流程中找漏洞,需要了解业务,但不一定需要拥有高超的计算机技术,因此受到各类犯罪团伙的青睐。有时,安全人员对此类漏洞的发现能力还不及黑产团伙。